import java.util.ArrayList;
import java.util.List;

public class Klasse implements Comparable<Klasse>{
    private String stufe;
    private int zug;
    List<Stufe> stufen = new ArrayList<Stufe>();

    /**
     * Konstruiert die Klasse mit ihren werten
     * @param stufe
     * @param zug
     */
    public Klasse(String stufe, int zug) {
        this.stufe = stufe;
        this.zug = zug;
    }

    /**
     * Konstruiert die Klasse mit Unbekannten werten.
     */
    public Klasse() {
        this.stufe = "N/A ";
        this.zug = 0;
    }

    /**
     * Konstruiert die Klasse mit ihren werten
     * @param stufe
     * @param zug
     * @param stufen
     */
    public Klasse(String stufe, int zug, List<Stufe> stufen) {
        this.stufe = stufe;
        this.zug = zug;
        this.stufen = stufen;
    }

    /**
     * Fügt eine neue Stufe der Klasse hinzu
     * @param stufe
     */
    public void addStufe(Stufe stufe) {
        stufen.add(stufe);
    }

    /**
     * Entfernt eine vorhandene Stufe der Klasse
     * @param stufe
     */
    public void removeStufe(Stufe stufe) {
        stufen.remove(stufe);
    }

    /**
     * Gibt die Liste der Stufen zurück
     * @return
     */
    public List<Stufe> getStufe() {
        return stufen;
    }

    /**
     * Gibt die Attribute der Klasse aus
     * @return
     */
    @Override
    public String toString() {
        StringBuilder druffel = new StringBuilder("\n("+stufe+zug+" "+stufen+")");
        return druffel.toString();
    }

    /**
     * Vergleicht die werte der Stufe
     * @param o
     * @return
     */
    @Override
    public int compareTo(Klasse o) {
        return stufe.compareTo(o.stufe);
    }


}